home *** CD-ROM | disk | FTP | other *** search
- ;****** Auto-Revision Header (do not edit) *******************************
- ;*
- ;* © Copyright by PetiWare
- ;*
- ;* Filename : PToolLibrary.i
- ;* Created on : 23-Aug-92
- ;* Created by : Peter Simons
- ;* Current revision : V2.000
- ;*
- ;*
- ;* Purpose: Functionoffsets for PTool.library
- ;*
- ;*
- ;* V2.000 : Definitionen für v2.xxx der PTool.Library
- ;* Peter Simons (15-Mär-93)
- ;*
- ;* V1.000 : Definitionen für V1.xxx der Library
- ;*
- ;* V0.000 : --- Initial release ---
- ;*
- ;*************************************************************************
-
- ;-------------------------------------- Offsets -----------
- LIBINIT
-
- LIBDEF _LVOAllocNewStack
- LIBDEF _LVORestoreStack
-
- LIBDEF _LVOGetErrorMsg
- LIBDEF _LVOErrorHandleDos
- LIBDEF _LVOErrorHandleIntuition
-
- LIBDEF _LVOCheckConfig
- LIBDEF _LVODisplayConfigErrorDos
-
- LIBDEF _LVOGetStackSize
-
- LIBDEF _LVOParsePatternFast
- LIBDEF _LVOPatternMatchFast
- LIBDEF _LVOParsePatternFastArray
- LIBDEF _LVOPatternMatchFastArray
- LIBDEF _LVOPatternTest
-
- LIBDEF _LVOLoadFile
-
- LIBDEF _LVOInterpretConfigBuffer
- LIBDEF _LVOInterpretConfigFile
-
- LIBDEF _LVOPrintF
- LIBDEF _LVOPrintFSimple
-
- LIBDEF _LVOLoadBreak
- LIBDEF _LVOSaveBreak
-
- LIBDEF _LVOGetFileSize
-
- LIBDEF _LVOCRC16Buffer
- LIBDEF _LVOCRC16File
-
- LIBDEF _LVOPTAllocRemember
- LIBDEF _LVOPTFreeRemember
- LIBDEF _LVOPTFreeOneBlock
-
- LIBDEF _LVOLoadFileRemember
- LIBDEF _LVOInterpretConfigFileRemember
-
- LIBDEF _LVOFind
- LIBDEF _LVOReplace
- LIBDEF _LVOCmpStrings
- LIBDEF _LVOCmpStringsSen
-
- LIBDEF _LVOCRC32Buffer
- LIBDEF _LVOCRC32File
-
- ;-------------------------------------- LibraryName -------
- PTOOLNAME MACRO
- CSTR "ptool.library"
- EVEN
- ENDM
-
- ;-------------------------------------- LibraryBase -------
- STRUCTURE PToolLib,LIB_SIZE
- ULONG ptl_SysBase
- ULONG ptl_DOSBase
- ULONG ptl_IntuitionBase
- ULONG ptl_LocaleBase
- ULONG ptl_MessageCatalog
- ULONG ptl_SegList
- LABEL ptl_SIZEOF
-
- ;-------------------------------------- CheckConfig -------
- BITDEF CC,68010,0
- BITDEF CC,68020,1
- BITDEF CC,68030,2
- BITDEF CC,68040,3
- BITDEF CC,68881,4
- BITDEF CC,68882,5
- BITDEF CC,FPU40,6
- BITDEF CC,OS_VERSION,16
- CC_MAXCONFIG EQU %00000000000000010000000001111111
-
- ;-------------------------------------- InterpretConfig ---
- IC_TagBase EQU TAG_USER+$F0000
-
- IC_String EQU IC_TagBase+$01
- IC_Number EQU IC_TagBase+$02
- IC_YesNo EQU IC_TagBase+$03
-
- ;-------------------------------------- PTAllocRemember ---
- PTMemoryList CLRSO ; Interner Aufbau der Remember-Liste
- ptml_NextBlock SO.L 1
- ptml_Size SO.L 1
- ptml_SIZEOF SOVAL
-
- ;-------------------------------------- ErrorHandle -------
- ; ERRORHANDLE ist ein fertig ausgearbeitetes Macro, daß die komfortable
- ; Einbindung von Fehlermeldungen erlaubt. Die Parameter sind:
- ; SaveTo, Errornummer, Continue, [Dataflow], [DataFlow2]
- ;
- ; SaveTo - kann auch weggelassen werden (sprich:''), dann wird D0 nicht
- ; gespeichert sondern lediglich getestet. Wichtig: Dieses Macro
- ; funktioniert nach Routinen, die eine 0L als Fehler
- ; zurückgeben!
- ;
- ; Errornummer - Die Errornummer
- ;
- ; DataFlow - Der erste Parameter für die Fehlermeldung, je nachdem eine
- ; Zahl oder Adresse. Um die richtige Verwaltung kümmert sich das
- ; Macro selbst.
- ;
- ; DataFlow2 - genau wie der vorherige Parameter, nur ist dieser optional
- ;
- ;
- ;
- ; Das Macro ruft eine Funktion mir Namen _ErrorHandle auf, die ungefähr
- ; folgendes Aussehen haben sollte:
- ;
- ; _ErrorHandle movem.l d0-d1/a0-a2/a6,-(SP)
- ; lea (PrgName,PC),a0
- ; sub.l a2,a2
- ; move.l (_PToolBase,PC),a6
- ; jsr (_LVOErrorHandleIntuition,a6)
- ; movem.l (SP)+,d0-d1/a0-a2/a6
- ; rts
- ;
- ; Für ErrorHandleDos() kann A2 natuerlich vernachlässigt werden,
- ; allerdings muß dann D1 initialisiert werden. Die Routine bekommt als
- ; Parameter einfach D0 und A1 fertig initialisiert. Wollen sie also
- ; demnächst einen Fehler mittels IoErr() abfangen, reicht jetzt:
- ;
- ; [...]
- ; tst.l d0
- ; bne.b .NoError
- ; pea (.GoOn,PC)
- ; bra _ErrorHandle ; Die Null steht schon in D0!!
- ;
- ; .NoError [...]
- ;
- ; oder sogar:
- ;
- ; ERRORHANDLE ,0,(.GoOn,PC)
- ;
- ;
-
- ERRORHANDLE MACRO
- errbyte set 0
- IFC ,\1
- tst.l d0 ; Ist ein Ziel für D0 an-
- ELSE ; gegeben? Wenn nein, dann
- move.l d0,\1 ; einfach D0 testen.
- ENDC
- bne.b .NoError\@ ; In D0 steht schon eine
- IFEQ \2 ; Null!!
- pea \3
- bra _ErrorHandle ; Fehler 0 --> keine Parameter
- ELSE
- IFEQ \2-5
- pea \3
- bra _ErrorHandle ; Fehler 5 --> keine Parameter
- ELSE
-
- moveq #\2,d0 ; Fehlernummer nach D0
- IFNC \5 ; Wenn vorhanden, den
- IFEQ \2-9 ; zweiten DataFlow auf den
- move.w #\5,-(SP) ; Stack legen.
- errbyte set errbyte+2
- ELSE ; Sonderfälle:
- pea \5 ; Err 9 = Zahl.W
- errbyte set errbyte+4
- ENDC ; Ansonsten immer ein Zeiger
- ENDC ; auf einen String
-
- IFEQ \2-2 ; Ersten DataFlow auf den
- move.l #\4,-(SP) ; Stack legen.
- errbyte set errbyte+4
- ELSE ; Sonderfälle:
- IFEQ \2-8 ; Err 2 = Zahl.L
- move.l #\4,-(SP) ; Err 8 = Zahl.L
- errbyte set errbyte+4
- ELSE
- pea \4 ; Ansonsten immer ein Zeiger
- errbyte set errbyte+4
- ENDC
- ENDC
- move.l SP,a1 ; Zeiger auf den DataFlow
- bsr _ErrorHandle ; nach A1 laden und in
- addq.w #errbyte,SP ; ErrorHandle() springen.
- bra \3
- ENDC
- ENDC
- .NoError\@
- ENDM
-
-